//
// Created by jiazhong on 2023/11/9.
//

#ifndef MEDIASTUDY_JAVACALLHELPER_H
#define MEDIASTUDY_JAVACALLHELPER_H

#include <jni.h>

// 标记线程 因为子线程需要attach
#define THREAD_MAIN 1
#define THREAD_CHILD 2

// 回调Java
class JavaCallHelper {
public:
    // 初始化要回调的Java的对象和Java虚拟机对象。因为C++的线程和Java虚拟机的线程是不一致的。
    JavaCallHelper(JavaVM *_javaVM, JNIEnv *_env, jobject &_jobj);

    // 将数据发送给Java层
    void postH264(char *data, int length, int thread = THREAD_MAIN);

    // 析构函数(onDestroy)
    ~JavaCallHelper();

private:
    JavaVM *javaVM;
    JNIEnv *env;
    jobject jobj;
    jmethodID jMethodId_postData;
};

#endif //MEDIASTUDY_JAVACALLHELPER_H
